home *** CD-ROM | disk | FTP | other *** search
Text File | 1993-04-20 | 3.4 KB | 101 lines | [TEXT/MPS ] |
- KNOWN BUGS AND OTHER PROBLEMS WITH MPW GCC
-
- -n is not implemented (actually, this is a feature!).
-
- Terrible junk is created by saving/restoring about ULMULT and friends.
-
- Document that MPW should be modified by changing HEXA 128 to be $00020000 from
- $00010000.
-
- Multiple levels of function inlining seems to defeat frame pointer omission.
-
- gCPlus is still a script rather than driver-based, slows it down.
-
- Using -opt branch with asm files > 32000 lines causes an infinite loop, because
- asm warnings give negative line numbers, shorten ignores, and loop keeps finding
- warnings to try to process.
-
- Should detect and warn if FPU not present, instead of crashing mysteriously.
-
- Initializing a local variable that is a structure or array makes global data
- when it would be better not to.
-
- Data copying should be able to use an inline dbra loop rather than calling
- memcpy always.
-
- Need an option to return shorts instead of ints from functions declared to
- return shorts - similarly to what happens when a function is declared "pascal",
- but without the other effects.
-
- Very long direct fns may exceed 25-arg limit on DC.Ws in asm code.
-
- Using all 5 regs in a parameter pragma effectively disables the pragma.
-
- gCPlus should use {CPlusScratch} as its temp folder.
-
- When -finline-functions is used, not all needed symbols are created
- and imported.
-
- Some sorts of conversions (such as double <-> extended) cause a crash in
- the reload phase. Seems to be more common with optimization+SANE+extended
- floats, but has been observed in other situations also.
- Example (OK with -mc68881, fails without):
- int n, i, arr[10];
- float c, theta, tang;
- test() {
- for (i = 0; i < n; i++) {
- tang = atan2 (cos (i * 2.0), sin (i * 2.0));
- arr[i] = 50 * c * sin (tang); }}
- Workaround: temp variables and multiple assignment statements seem to help.
-
- #<symbol> sometimes appears as an operand (as when pointer arithmetic is being
- done on the address of an array), causing MPW Asm to report an error.
- Example:
- extern char gline[100], *fooline;
- short foo() { return fooline - gline; }
- Workaround: assign address to a temp pointer, then do operations on value of ptr.
-
- -b option causes a failure when initializing some arrays of strings.
- Example: GCC compiling wordlist in c-parse.tab.c.
- Workaround: don't use -b when self-compiling.
-
- Casted objects passed by address to pascal functions don't get converted.
-
- Pointer to a function does not have the right sort of value
- Example:
- void f();
- void (*fp)() = f;
- foo() { return *fp == f; } /* returns 0, but should return 1 */
-
- -mbg ch8 and -mbg <number> are not implemented.
-
- Result from pascal fns goes to d0 then to final place, instead of being returned
- there directly.
-
- Complains about mismatches between ptrs to chars and unsigned chars
- (Mac read() proto vs cccp.c, for instance).
-
- -bigseg is not implemented. (should use -model xxx in asm)
-
- -notonce is not implemented in cpp.
-
- Buildgccstages should fail completely if any single build fails.
-
- (The following are garbled reports recorded for the sake of completeness)
-
- Incorrect code gen for C code defined as pascal fn returning structs?
-
- Check on value of __VERSION__ ?
-
- Ensure that -elems881 disabled if target is not a 680x0 (2.x only?)
-
- Wrong output of dependency making, that it has correct quoting (single quotes?)?
-
- Wrong profile stuff vs APPLE_C (should be MPW?)?
-
- What does GCC do for 1.0 / 0.0 ?
-
- Strength reduction bugs for floats??
-
- inlining of functions vs float/double/extended?
-